Cloud-based device information storage

ABSTRACT

Device information for each of multiple devices associated with a user account is maintained by a cloud service. The device information can include credential information allowing the device to be accessed by other ones of the multiple devices, remote access information indicating how the device can be accessed by other ones of the multiple devices on other networks, and property information including settings and/or device drivers for the device. The device information for each of the multiple devices is made available to other ones of the multiple devices, and can be used by the multiple devices to access one another and provide a consistent user experience across the multiple devices.

RELATED APPLICATIONS

This application is a continuation of and claims priority under 35U.S.C. Section 120 to U.S. patent application Ser. No. 14/528,781, filedOct. 30, 2014, entitled “Cloud-Based Device Information Storage” toNarayanan Ganapathy, which is a continuation of, and priority is claimedto, U.S. patent application Ser. No. 13/113,384, filed May 23, 2011,entitled “Cloud-Based Device Information Storage” to NarayananGanapathy, which is a continuation-in-part of, and priority is claimedto, U.S. patent application Ser. No. 12/191,724, filed Aug. 14, 2008,entitled “Portable Device Association” to Narayanan Ganapathy, theentire disclosures of each of these applications being incorporated byreference in their entirety.

BACKGROUND

As technology has advanced, the number of different devices that usershave has increased. For example, users can have home and work computers,smartphones, printers, and so forth. Oftentimes, users desire to havethese devices communicate with one another, such as to transfer datafrom a smartphone to a computer, print data, and so forth. Althoughallowing such communication can be beneficial, it is not without itsproblems. One such problem is that it can be burdensome for the user toconfigure these different devices to communicate with one another,reducing the user friendliness of the devices.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

In accordance with one or more aspects, device information for each ofmultiple devices associated with a user account is maintained by a cloudservice. The device information includes, for one or more of themultiple devices, credential information allowing the device to beaccessed by other ones of the multiple devices. The device informationfor each of the multiple devices is made available to other ones of themultiple devices.

In accordance with one or more aspects, at a first device, deviceinformation is obtained for a second device from a cloud service. Thedevice information for the second device is associated with a useraccount of a user logged in to the cloud service. This deviceinformation for the second device is used, by the first device, toaccess the second device.

BRIEF DESCRIPTION OF THE DRAWINGS

The same numbers are used throughout the drawings to reference likefeatures.

FIG. 1 illustrates an example system implementing the cloud-based deviceinformation storage in accordance with one or more embodiments.

FIG. 2 illustrates an example system implementing the cloud-based deviceinformation storage in accordance with one or more embodiments.

FIG. 3 illustrates example device information that is maintained by acloud service for a device in accordance with one or more embodiments.

FIG. 4 is a flowchart illustrating an example process for implementingthe cloud-based device information storage in accordance with one ormore embodiments.

FIG. 5 is a flowchart illustrating an example process for implementingthe cloud-based device information storage in accordance with one ormore embodiments.

FIG. 6 illustrates an example computing device that can be configured toimplement the cloud-based device information storage in accordance withone or more embodiments.

DETAILED DESCRIPTION

Cloud-based device information storage is discussed herein. A cloudservice allows a user to associate various devices with his or her useraccount. These devices can include various different types of devices,such as home and work computers, smartphones, printers or printingservices, and so forth. Device information for each of these variousdevices is maintained by the cloud service and can be obtained by otherones of the devices associated with his or her user account, allowingthe devices to communicate with one another without the user having toindividually configure each device to communicate with each otherpossible device. The device information can include credentialinformation allowing a device to authenticate itself to another deviceto indicate it is permitted to access that other device. The deviceinformation can also include remote access information indicating how adevice on one network can be accessed by a device on another network.The device information can also include various other attributesregarding the device, such as settings, drivers, and so forth.

References are made herein to symmetric key cryptography, public keycryptography and public/private key pairs. Although such keycryptography is well-known to those skilled in the art, a brief overviewof such cryptography is included here to assist the reader. In publickey cryptography, an entity (such as a user, hardware or softwarecomponent, a device, a domain, and so forth) has associated with it apublic/private key pair. The public key can be made publicly available,but the entity keeps the private key a secret. Without the private keyit is computationally very difficult to decrypt data that is encryptedusing the public key. So, data can be encrypted by any entity with thepublic key and only decrypted by an entity with the correspondingprivate key. Additionally, a digital signature for data can be generatedby using the data and the private key. Without the private key it iscomputationally very difficult to create a signature that can beverified using the public key. Any entity with the public key can usethe public key to verify the digital signature by executing a suitabledigital signature verification algorithm on the public key, thesignature, and the data that was signed.

In symmetric key cryptography, on the other hand, a shared key (alsoreferred to as a symmetric key) is known by and kept secret by the twoentities. Any entity having the shared key is typically able to decryptdata encrypted with that shared key. Without the shared key it iscomputationally very difficult to decrypt data that is encrypted withthe shared key. So, if two entities both know the shared key, each canencrypt data that can be decrypted by the other, but other entitiescannot decrypt the data if the other entities do not know the sharedkey. Similarly, an entity with a shared key can encrypt data that can bedecrypted by that same entity, but other entities cannot decrypt thedata if the other entities do not know the shared key. Additionally,digital signatures can be generated based on symmetric key cryptography,such as using a keyed-hash message authentication code mechanism. Anyentity with the shared key can generate and verify the digitalsignature. For example, a trusted third party can generate a symmetrickey based on an identity of a particular entity, and then can bothgenerate and verify digital signatures for that particular entity (e.g.,by encrypting or decrypting the data using the symmetric key).

FIG. 1 illustrates an example system 100 implementing the cloud-baseddevice information storage in accordance with one or more embodiments.System 100 includes a cloud service 102 and various devices 104-118 thatcan communicate with one another, as well as with cloud service 102, viaa network 120. Network 120 can be a variety of different networks,including the Internet, a local area network (LAN), a wide area network(WAN), a personal area network, a cellular or other phone network, anintranet, other public and/or proprietary networks, combinationsthereof, and so forth. It should be noted that network 120 can beconfigured to include multiple networks.

Devices 104-118 can be a variety of different types of devices. Forexample, in system 100 device 104 is a laptop or netbook computer,device 106 is a cellular or other wireless phone (e.g., a smartphone),device 108 is a tablet or notepad computer, device 110 is a printer,device 112 is a desktop computer, device 114 is a printer (whichcommunicates with other devices via device 112), device 116 is atelevision or other display device, and device 118 is a devicerepresented by a cloud service (e.g., an online service storingaudio/video content for playback, an online gaming service, and soforth). The devices illustrated in system 100 are examples of devices,and various other types of devices can also be included in system 100such as a server computer, a mobile station, an entertainment appliance,a set-top box communicatively coupled to a display device, a gameconsole, an automotive computer, a scanner, a facsimile machine, awireless headset (e.g., a Bluetooth® headset), and so forth.

Cloud service 102 is a service that can be accessed by a user via anetwork (e.g., network 120 in the example of FIG. 1). Cloud service 102is implemented using one or more of a variety of different types ofdevices, including one or more of the same types as devices 104-118and/or other types of devices (e.g., server computers, mobile stations,and so forth). Cloud service 102 includes a device informationmanagement module 132 and a per-user device property store 134. Deviceinformation management module 132 manages storage and retrieval ofdevice information for devices (e.g., one or more of devices 104-118)for each of multiple users of system 100. Per-user device informationstore 134 stores the device information for the devices for each ofmultiple users of system 100.

Device information for one or more devices 104-118 that are associatedwith a user can be saved to cloud service 102 as associated with a useraccount of that user. A device associated with a user is a device thatthe user is authorized to use, such as a device owned by the user, adevice provided to the user (e.g., a work computer), a collection ofdevices that the user pays to use or has an account with (e.g., anonline printing service), and so forth. Device information managementmodule 132 receives the device information for a device 104-118associated with a user account of cloud service 102, and stores thedevice information in per-user device information store 134 asassociated with that user account. The user can subsequently log in tohis or her user account using one of devices 104-118, and have thatdevice access the device information associated with the user account instore 134. Thus, the user of a device can log in to his or her account,allowing that device to obtain the device information for the otherdevices associated with that user account. The device can use thisdevice information to access or communicate with those other devices, asdiscussed in more detail below.

FIG. 2 illustrates an example system 200 implementing the cloud-baseddevice information storage in accordance with one or more embodiments.System 200 includes a receiving device 202, a target device 204, asending device 206, and a cloud service 208. Cloud service 208 can be,for example, cloud service 102 of FIG. 1. Devices 202, 204, and 206 caneach be a device 104-118 of FIG. 1.

Device 206 is referred to as being a sending device because device 206sends or otherwise provides device information for target device 204 tocloud service 208. Device 202 is referred to as being a receiving device202 because device 202 receives or otherwise obtains device informationfor target device 204 from cloud service 208.

System 200 is discussed with reference to receiving device 202 accessingtarget device 204. For example, receiving device 202 can be a laptopcomputer accessing target device 204 that is a remote printer, a desktopcomputer, a phone, and so forth. It should be noted that a particulardevice can be both a receiving device 202 and a target device 204 atdifferent times and/or with respect to different devices. For example,at one point in time desktop computer device 112 of FIG. 1 can be areceiving device 202 accessing a printer device 110 of FIG. 1 that is atarget device 204, and at the same point in time (and/or at anotherpoint in time) desktop computer device 112 of FIG. 1 can be a targetdevice 204 being accessed by a laptop computer device 104 of FIG. 1 thatis a receiving device 202. It should also be noted that sending device206 can be a receiving device 202 and/or target device 204.

In system 200, sending device 206 obtains the device information fortarget device 204 and provides that device information to cloud service208 as associated with a particular user account. Cloud service 208maintains the device information for target device 204 as associatedwith that particular user account. Cloud service 208 makes the deviceinformation available to receiving device 202, which is also associatedwith that particular user account in the example of FIG. 2. Receivingdevice 202 can then use this device information obtained from cloudservice 208 to access target device 204, as discussed in more detailbelow.

Cloud service 208 includes a device information management module 216(which can be a device information management module 132 of FIG. 1) anda per-user device information store 218 (which can be a per-user deviceinformation store 134 of FIG. 1). Device information management module216 receives the device information for target device 204 from sendingdevice 206, and stores the device information in per-user deviceinformation store 218 as associated with the appropriate user account.Cloud service 208 can also implement user authentication functionality,or alternatively can communicate with a user authentication service thatimplements the user authentication functionality. The userauthentication functionality authenticates a particular user as beingauthorized or permitted to use a particular user account, and can beperformed in a variety of different manners. For example, the user canprovide a user identifier and password that are verified by theauthentication functionality, the user can provide a smartcard storing adigital certificate that is verified by the authenticationfunctionality, and so forth.

Which user account the device information is to be associated with canbe determined in different manners. In one or more embodiments, a userof sending device 206 logs in to his or her user account of cloudservice 208, and device information provided to cloud service 208 bysending device 206 is automatically associated with that user account bycloud service 208. An indication of the user account can be provided todevice information management module 216 in a variety of differentmanners. For example, a user can log in to his or her user account viasending device 206 and cloud service 208, in which case the user accountis known to cloud service 208. By way of another example, the user canlog in to his or her user account via sending device 206 and anauthentication service (not shown), and the authentication service canprovide the indication of the user account associated with sendingdevice 206 to device information management module 216. By way of yetanother example, the user can log in to his or her user account viasending device 206 and an authentication service (not shown), theauthentication service can provide the indication of the user account(e.g., a token) to sending device 206, and sending 206 can in turnprovide the indication of the user account to device informationmanagement module 216.

Alternatively, which user account the device information is to beassociated with can be determined in different manners, such as beingprovided to sending device 206 by the user (optionally without loggingin to his or her user account). For example, sending device 206 can beassociated with a seller (e.g., online retailer, brick and mortarretailer, etc.) of devices, and can receive a user account identifierfrom a user that is purchasing a device. The user can provide his or heruser account identifier to sending device 206 (optionally logging in tohis or her account to make the purchase), and sending device 206 canprovide that user account identifier to cloud service 208.

FIG. 3 illustrates example device information 300 that is maintained bya cloud service for a device in accordance with one or more embodiments.Device information 300 can be, for example, the device information fortarget device 204 of FIG. 2. Device information 300 includes a containeridentifier 302, which is an identifier of the device to which deviceinformation 300 applies (also referred to as the device with whichdevice information is associated). Container identifier 302 allows thedifferent devices associated with a user account to be distinguishedfrom one another.

Functionality identifier 304 is an identifier of the functionalitysupported by the device to which device information 300 applies. Thedevice can support single functionality (e.g., printing), oralternatively multiple functionality (e.g., printing, scanning, faxing,etc.). Functionality identifier 304 can take a variety of differentforms, such as hardware identifiers corresponding to particularfunctions (e.g., a particular hardware identifier for printingfunctionality, another hardware identifier for scanning functionality,and so forth), a descriptive text of functionality, and so forth.

Device friendly name 306 is an identifier of the device to which deviceinformation 300 applies that is typically considered more readilyunderstandable by users than container identifier 302. For example, thecontainer identifier may be an integer or other alphanumeric string,while the device friendly name may be a name such as “Internet printservice” or “home office printer”.

Device information 300 also optionally includes credential information308. Credential information 308 includes information allowing otherdevices to authenticate themselves to the device to which deviceinformation 300 applies in order for the other devices to indicate theyare permitted to access the device to which device information 300applies. This credential information can take a variety of differentforms, such as a personal identification number (PIN), a symmetric key,a private key, a name and/or password, and so forth. In some situationsthe device to which device information 300 applies does not support oruse authentication in order to be accessed by another device, in whichcase credential information 308 need not be included in deviceinformation 300.

Device information 300 also optionally includes remote accessinformation 310. Remote access information 310 includes informationindicating how the device to which device information 300 applies can beaccessed by a device on another network. A device being on a particularnetwork refers to the initial network (at any given time) that thedevice communicates with (e.g., the network for which a network address(e.g., Internet Protocol (IP) address) is assigned to the device). Itshould be noted that a device can communicate with multiple networks andthus can be viewed as being coupled to multiple networks at the sametime, but the initial network that the device communicates with is thenetwork that the device is on. It should also be noted that the initialnetwork that the device communicates with can change over time (e.g., asthe device moves). For example, the initial network that the devicecommunicates with can be a home network (and the device can be assignedan IP address from a router of the home network), and through that homenetwork the device can access the Internet and a corporate LAN. Eventhough the device is coupled to and can communicate with the Internetand corporate LAN, the device is viewed as being on the home network.

Remote access information 310 can take a variety of different forms,such as an identifier of a gateway (e.g., an IP address) of a networkthat the device to which device information 300 applies is on, anidentifier of the device to which device information 300 applies on thatnetwork (e.g., an IP address of the device on the network), anidentifier of credential information (analogous to credentialinformation 308) used in order to be permitted by the gateway to accessdevices on that network, and so forth. In some situations the device towhich device information 300 applies (or the network that the device towhich device information applies is on) does not support or use suchremote access, in which case remote access information 310 need not beincluded in device information 300.

Device information 300 also optionally includes property information312. Property information 312 includes information identifying variousattributes or properties of the device to which device information 300applies, such as device settings, device drivers, applications, and soforth. For example, property information 312 can includemanufacturer-supplied configuration settings indicating how the deviceto which device information 300 applies (or another device accessing thedevice to which device information 300 applies) is to be configured whenaccessed, such as language settings, region settings, security settings,and so forth. By way of another example, property information 312 caninclude user-specified settings indicating how the device to whichdevice information 300 applies (or another device accessing the deviceto which device information 300 applies) is to be configured whenaccessed, such as any changes made by the user to themanufacturer-supplied configuration settings, settings desired by theuser (e.g., screen resolution settings, print resolution settings, printlocation for an online service, etc.), and so forth. By way of yetanother example, property information 312 can include device driversand/or configuration files indicating how a device driver for the deviceto which device information 300 applies is to be installed on aparticular device in order to allow that particular device tocommunicate with the device to which device information 300 applies(e.g., property information 312 can include the device drivers and/orconfiguration files, and/or can include identifiers of locations wherethe device drivers and/or configuration files can be obtained (such asother services, devices, and so forth)). By way of still anotherexample, similar to the device drivers, property information 312 caninclude applications to be installed on a particular device in order toallow that particular device to communicate with (or otherwisefacilitate communication with) the device to which device information300 applies (e.g., property information 312 can include the applicationsand/or identifiers of locations where the applications can be obtained).

Device information 300 can also optionally include various additionalinformation regarding the device in addition to the informationillustrated in FIG. 3.

Table I is an example of information that can be included as deviceinformation 300. It should be noted that the information in Table I isan example of information that can be included as device information300, and that all the information listed in Table I need not be includedas device information 300 and/or that additional information can beincluded as device information 300. The information in Table I caninclude information illustrated in FIG. 3, and/or additional informationnot illustrated in FIG. 3.

TABLE I Information Description Container ID An identifier of thedevice. Hardware IDs Identifiers of the functionality supported by thedevice. Network A pointer to an identifier of the particular networkthat Information the device is on (e.g., an identifier of whereinformation describing how to communicate with devices on thatparticular network is stored). Device Category An indication of a typeor classification of the device (e.g., allowing an appropriate icon tobe displayed in a user interface identifying the device). Timestamp oflast A date and/or time of when the device was last used use (e.g., asprovided by the device). Presence An indication of whether the device iscurrently powered on and available for use (e.g., available to beaccessed by other devices). Network Address A network address (e.g., anIPv6 address and/or IPv4 address) of the device. MAC Address A MAC(Media Access Control) address of the device. State An indication of thestate of the device (e.g., offline, sleeping, accessible via thenetwork, on battery power, on AC power, etc.). Wake pattern Anindication of a particular byte sequence that, arriving at the device,wakes the device from sleeping. Current network An identifier of thenetwork that the device is currently on. Network list Identifiers ofnetworks that the device has been on in the past. User locale A localethat the user account is associated with (e.g., a particular geographicregion, language, domain, etc.). Group name An identifier of a groupthat the device is part of. Task list A list of tasks that can beaccomplished with the device (e.g., which can be displayed in a userinterface identifying the device). Deletion An indication whether thedevice information for the indication device should be deleted from thedevices associated with the user account (e.g., due to its having beendeleted from one of the devices associated with the user account). Firstinstall A time and/or date of when the device was first paired toanother device by the user. Deletion time An indication of when thedevice information for the device was first deleted from one of thedevices associated with the user account. Discovery An indication of thetransport used to discover the device provider when first paired with adevice associated with the user account (e.g., Bluetooth ®, UniversalPlug and Play, Web Services on Devices, WiFi Direct, etc.). Deviceidentity An identity of the device within the discovery providernamespace (e.g., a Bluetooth ® identifier of the device). Association Anindication of credential information used to access Information thedevice.

It should also be noted that some devices can themselves be directlycoupled to a network, such as a device 110 or device 106 of FIG. 1 beingdirectly coupled to network 120 of FIG. 1. Other devices, however, canbe coupled to a network through another device (also referred to as aproxy), such as a printer 114 of FIG. 1 being coupled to network 120through device 112 of FIG. 1. For a particular device that is coupled toa network through a proxy, the device information for that particulardevice includes the information allowing that particular device to beaccessed through the proxy. For example, the device information fordevice 114 of FIG. 1 includes information allowing device 114 and device112 to be accessed. Thus, a device coupled to a network through anotherdevice is still identified as a device in per-user device informationstore, and can be accessed by others of the user's devices as if thedevice were actually coupled directly to the network.

Such a device that is coupled to a network through a proxy can betreated as a separate device and have its own device information 300 inthe per-user device information store, or alternatively can be treatedas functionality of the proxy. For example, device 114 and device 112can each have separate device information 300 with different containeridentifiers 302 in the per-user device information store. Alternatively,device 112 can have device information 300 in the per-user deviceinformation store with the print functionality of device 114 beingidentified in the functionality identifier of device information 300 ofdevice 112 (in which case device 114 would not have separate deviceinformation 300 in the per-user device information store).

In one or more embodiments, if one device (a device A) is built intoanother device (a device B) such as a computer, then device B has deviceinformation 300 in the per-user device information store with thefunctionality of device A being identified in the functionalityidentifier of device information 300 of device B. However, if one device(a device C) is external to and coupled to another device (device B)such as a computer, then device C and device B both have their owndevice information 300 in the per-user device information store.

Returning to FIG. 2, sending device 206 can obtain the deviceinformation for target device 204 in a variety of different manners. Thedevice information for target device 204 can be obtained from targetdevice 204, can be generated by sending device 206, and/or can beobtained by sending device 206 from another device or user. In one ormore embodiments, sending device 206 obtains the device information fortarget device 204 when target device 204 and sending device 206 arepaired to one another. Pairing target device 204 and sending device 206refers to devices 204 and 206 being configured to allow the devices 204and 206 to access each other (or allow one to access the other) at theuser's consent. The pairing of two devices includes device information(e.g., credential information, remote access information, and/orproperty information, as discussed above) for at least one of thedevices being obtained by the other of the devices. The deviceinformation can be provided by the other of the devices being paired, oralternatively by another device. For example, target device 204 canprovide to sending device 206 a name and password to be used by sendingdevice 206 to access target device 204 as part of pairing devices 204and 206. By way of another example, as part of pairing devices 204 and206, a user of target device 204 and sending device 206 can provide aPIN to both target device 204 and sending device 206 to be used bysending device 206 and target device 204 to access one another. By wayof yet another example, sending device 206 can obtain a device driverand/or configuration file from a disc or other device as part of pairingdevices 204 and 206.

Sending device 206 includes a device association module 210, a devicesynchronization module 212, and a device information store 214. Deviceassociation module 210 manages pairing sending device 206 with anotherdevice, such as target device 204. Sending device 206 can also be pairedwith various other devices. Device information store 214 maintains thedevice information for (and allowing sending device 206 to access)devices with which sending device 202 is paired.

Device synchronization module 212 manages synchronization of deviceinformation between sending device 206 and cloud service 208 for a userof sending device 206. This synchronization includes obtaining deviceinformation from cloud service 208 and/or providing device informationto cloud service 208. For example, device information obtained bysending device 206 from target device 204 being paired with sendingdevice 206 is provided to cloud service 208. By way of another example,new device information can be obtained from cloud service 208 and addedto device information store 214. Sending device 206 can then use thatnew device information to access the device for which that deviceinformation applies.

This synchronization can be performed at regular or irregular intervals,in response to certain events (e.g., new device information being storedin device information store 214, a user logging in to cloud service 208,a user request to perform the synchronization, changes to the deviceinformation, etc.), and so forth. Cloud service 208 can also optionallyinclude synchronization functionality (e.g., as a separate module or aspart of device information management module 216). The synchronizationfunctionality in cloud service 208 can determine when to provide deviceinformation to sending device 206 (e.g., at regular or irregularintervals, in response to certain events, and so forth). For example,per-user device information store 218 includes device information formultiple devices associated with a user account, and in response to newdevice information being added to store 218 for that user, cloud service208 can communicate that new device information to each other deviceidentified in store 218 as being associated with that user account. Thenew device information can be communicated to each such device shortlyafter (e.g., within 5-10 minutes) the new device information is added tostore 218, can be communicated to a device when a user next logs in tohis or her user account using that device, can be communicated to adevice when the device is next detected as being online and accessibleto cloud service 208, and so forth. The new device information can becommunicated to all devices associated with that user, or alternativelyonly to particular devices (e.g., devices including a particularfunctionality identifier). The new device information can be deviceinformation for a device that was not previously included in per-userdevice information store, as well as changes to device informationincluded in per-user device information store.

Alternatively, sending device 206 can obtain the device information fortarget device 204 at other times (and optionally without target device204 and sending device 206 being paired to one another). Rather, thedevice information for target device 204 can be obtained by sendingdevice 206 from another device or user, and then provided to cloudservice 208. For example, sending device 206 can be owned by a merchantfrom which a user purchases target device 204. As part of the purchasingprocess, sending device 206 can generate the device information fortarget device 204 and provide the device information to cloud service208 (to be associated with the user account of the user making thepurchase, which can be provided to sending device 206 by the user makingthe purchase). The device information can optionally include credentialinformation, which device sending 206 obtains from and/or provides totarget device 204 (e.g., a PIN or password included in credentialinformation can be provided to cloud service 208 as device information,and also provided to target device 204).

Thus, it should be noted that in some embodiments sending device 206 isnot paired with target device 204. In such embodiments sending device206 need not include device association module 210 or device informationstore 214, and device synchronization module 212 provides deviceinformation to cloud service 208 but need not receive device informationfrom cloud service 208.

Target device 204 includes a device association module 222 andconfiguration data 224. Device association module 222 manages pairing oftarget device 204 with other devices, such as sending device 206 asdiscussed above. Configuration data 224 can include various data used bytarget device 204 to allow other devices to access target device 204,such as credential information (e.g., a PIN, name and password, etc.).Configuration data 224 can also include various data that areuser-specified settings and/or provider-supplied configuration settings.

Alternatively, rather than sending device 206 providing deviceinformation for target device 204 to cloud service 208, target device204 itself can provide device information for target device 204 to cloudservice 208. For example, the user can log in to his or her user accountusing target device 204, and device association module 222 (oralternatively another module of target device 204) can provide thedevice information for target device 204 to device informationmanagement module 216.

Receiving device 202 includes a device association module 232, a devicesynchronization module 234, and a device information store 236. Deviceassociation module 232 manages pairing receiving device 202 with anotherdevice, analogous to device association module 210 of sending device206. Receiving device 202 can be paired with various other devicesanalogous to the discussion above regarding sending device 206 andtarget device 204. Device information store 236 maintains the deviceinformation for (and allowing receiving device 202 to access) deviceswith which receiving device 202 is paired.

Device synchronization module 234 manages synchronization of deviceinformation between receiving device 202 and cloud service 208 for auser of receiving device 202. This synchronization can be performed atregular or irregular intervals, in response to certain events, and soforth, analogous to the discussion above regarding sending device 206.This synchronization is analogous to the synchronization of deviceinformation between sending device 206 and cloud service 208 discussedabove, except that the synchronization is between receiving device 202and cloud service 208 rather than between sending device 206 and cloudservice 208. For example, new device information obtained by receivingdevice 202 from another target device (not shown in FIG. 2) being pairedwith receiving device 202 can be provided to cloud service 208(analogous to sending device 206 providing device information to cloudservice 208 as discussed above). By way of another example, new deviceinformation can be obtained from cloud service 208 and added to deviceinformation store 236. Receiving device 202 can then use that new deviceinformation to access the device for which that device informationapplies. Thus, receiving device 202 can be paired with target device 204automatically using cloud service 208, without the user having tomanually pair target device 204 and receiving device 202.

Thus, a user of receiving device 202 can log in to his or her useraccount of cloud service 208, and obtain device information for thedevices associated with that user account in per-user device informationstore 218. With this obtained device information, receiving device 202is automatically paired with the other devices associated with that useraccount. The device information can be stored on receiving device 202 indevice information store 236, being persisted on receiving device 202after the user logs off his or her user account. Alternatively, thedevice information can be maintained by receiving device 202 while theuser is logged in to his or her user account, and then deleted orotherwise protected by receiving device 202 so that the deviceinformation is not accessible on receiving device 202 after the userlogs off his or her user account. For example, receiving device 202 canbe a public computer via which the user logs in to his or her useraccount. While logged in to his or her user account, receiving device202 can obtain the device information for (and thus access) devicesassociated with that user account. However, after the user logs off hisor her user account, receiving device 202 protects the deviceinformation so that receiving device 202 can no longer access devicesassociated with that user account (until the user again logs in to hisor her user account via receiving device 202). This protection of thedevice information can take various forms, such as encrypting the deviceinformation based on the user account (e.g., with a public key orsymmetric key associated with the user account), storing the deviceinformation in a location of a storage device only accessible to theuser account, deleting the device information, and so forth.

Receiving device 202 can use the device information in deviceinformation store 236 to access target device 204, even without targetdevice 204 having been manually paired by the user with receiving device202. Rather, target device 204 is automatically paired with receivingdevice 202 due to the device information for target device 204 beingreceived from cloud service 208. The device information in store 236includes the credential information (if any) used by receiving device202 to access target device 204. Additionally, the device information instore 236 can also include property information (e.g., device drivers,configuration files, settings, etc.) to be used by and/or installed onreceiving device 202 to access target device 204. Furthermore, thedevice information in store 236 can also include remote accessinformation to be used by receiving device 202 to access target device204 on another network.

Furthermore, it should be noted that once the device information is indevice information store 236, receiving device 202 can use the deviceinformation in device information store 236 to access target device 204regardless of whether cloud service 208 is accessible to receivingdevice 202. As long as the device information for target device 204 isincluded in device information store 236, and receiving device 202 cancommunicate with target device 204, receiving device 202 can use thedevice information for target device 204 to access target device 204.

Thus, when a user desires to allow a particular target device to beaccessed by other devices associated with his or her user account, theuser can simply associate the particular target device with another ofthe user's devices that is associated with his or her user account oncloud service 208, which will pair those two devices and result in thedevice information for the particular target device being made availableto other devices associated with his or her user account. Alternatively,the user can simply log in to cloud service 208 from the particulartarget device, resulting in the device information for the particulartarget device being added to per-user device information store 218 asassociated with his or her user account. Alternatively, the user cansimply request that the seller from which he or she purchases theparticular target device provide the device information for thatparticular target device to cloud service 208.

Each device associated with the user account of a user can obtain thedevice information for the other devices that are associated with theuser account, allowing the various devices to access or communicate withone another based on the device information stored in cloud service 208.Receiving device 202 can use the device information for target device204 to access target device 204 in a variety of different manners, basedat least in part on the device information for target device 204.

If the device information for target device 204 includes credentialinformation, then receiving device 202 can use that credentialinformation to access target device 204. For example, if target device204 is an Internet print service for which a name and password is neededfor the user to print, then receiving device 202 obtains that name andpassword for the Internet print service from the device information fortarget device 204 and uses that name and password to access the Internetprint service. By way of another example, if target device 204 is awireless headset for which a PIN is needed for receiving device 202 toaccess the wireless headset, then receiving device 202 obtains the PINfor the wireless headset from the device information for target device204 and uses that PIN to access the wireless headset.

If the device information for target device 204 includes remote accessinformation, then receiving device 202 can use that remote accessinformation to access target device 204. For example, if target device204 is a printer on a different network than receiving device 202, thenreceiving device 202 obtains, from the device information for targetdevice 204, the information used to access that network (e.g., an IPaddress of a gateway for the network that target device 204 is on, apassword or PIN to provide to that gateway in order for receiving device202 to be allowed to access the network that target device 204 is on, anIP address of target device on the network that target device 204 is on,and so forth) and uses that information to access the printer. By way ofanother example, if target device 204 is a home computer on a homenetwork and receiving device 202 is a work computer on a work network,then receiving device 202 obtains, from the device information fortarget device 204, the information used to access the home network,(e.g., an IP address of a gateway for the home network, a password orPIN to provide to that gateway in order for receiving device 202 to beallowed to access the home network, etc.), and the information used toaccess the home computer (e.g., a name and password to provide to thehome computer that the work computer is permitted to access the homecomputer) and uses that information to access the home computer.

If the device information for target device 204 includes propertyinformation, then receiving device 202 can use that property informationto access target device 204. For example, receiving device 202 canobtain the appropriate manufacturer-supplied or user-specified settings,and configure receiving device 202 (and/or target device 204) inaccordance with those settings. By way of another example, receivingdevice 202 can obtain the device driver for target device 204 asindicated in the device information, and install that device driver onreceiving device 202 in order to access target device 204.

Additionally, based on the device information for target device 204, aconsistent user experience for target device 204 can be provided to theuser across all of his or her devices. For example, if the deviceinformation for target device 204 includes a friendly name for targetdevice 204 (e.g., “home laser printer”), then that same friendly namecan be displayed to the user for target device 204 regardless of whichdevice he or she is using (e.g., his or her home computer, workcomputer, etc). By way of another example, if the device information fortarget device 204 includes an icon or a device type for which anassociated icon can be obtained for target device 204 (e.g., an icon ofa wireless headset), then that same icon can be displayed to the userfor target device 204 regardless of which device he or she is using(e.g., his or her home computer, work computer, etc).

FIG. 4 is a flowchart illustrating an example process 400 forimplementing the cloud-based device information storage in accordancewith one or more embodiments. Process 400 is carried out by a cloudservice, such as cloud service 102 of FIG. 1 or cloud service 208 ofFIG. 2, and can be implemented in software, firmware, hardware, orcombinations thereof. Process 400 is shown as a set of acts and is notlimited to the order shown for performing the operations of the variousacts. Process 400 is an example process for implementing the cloud-baseddevice information storage; additional discussions of implementing thecloud-based device information storage are included herein withreference to different figures.

In process 400, device information for multiple devices of a user isreceived at a cloud service (act 402). This device information can bereceived from particular ones of the multiple devices or elsewhere(e.g., from a seller of one of the devices) as discussed above. Thedevice information can include various information as discussed above.

The device information is maintained in the cloud service as associatedwith a user account of the user (act 404). The cloud service can storedevice information for multiple different users. Additionally, a singleuser can have multiple different user accounts with different (and/orthe same) devices associated with each of the multiple accounts.

The device information for each device is made available for each of theother devices associated with the user account (act 406). The deviceinformation for a particular device can be obtained from other devicesassociated with the user account, and used by those other devices toaccess the particular device as discussed above. The device informationcan be made available by being synchronized between the devices andcloud service in a variety of different manners as discussed above.

FIG. 5 is a flowchart illustrating an example process 500 forimplementing the cloud-based device information storage in accordancewith one or more embodiments. Process 500 is carried out by a device,such as one of devices 104-118 of FIG. 1 or device 202 of FIG. 2, andcan be implemented in software, firmware, hardware, or combinationsthereof. Process 500 is shown as a set of acts and is not limited to theorder shown for performing the operations of the various acts. Process500 is an example process for implementing the cloud-based deviceinformation storage; additional discussions of implementing thecloud-based device information storage are included herein withreference to different figures.

In process 500, a cloud service is logged in to with a user account (act502) via the device implementing process 500. The cloud servicemaintains device information for multiple devices associated with theuser account as discussed above.

Device information for a target device is obtained from the cloudservice (act 504). The target device is one of the multiple devicesassociated with the user account with which the user is logged in to thecloud service as discussed above.

The device information is used to access the target device (act 506).The device information can include credential information, remote accessinformation, and/or property information as discussed above.

The cloud-based device information storage techniques discussed hereinsupport various usage scenarios. A user can log in to his or her useraccount and have the device information for each of his or her devicesstored in the cloud service once, and then easily access any of his orher devices from others of his or her devices without needing toindividually pair each set of two devices together. For example, theuser may have a home computer, a work computer, and a laptop computer.When the user purchases a new device (e.g., a smartphone or a wirelessheadset), he or she can log in to his or her user account, pair the newdevice with one of his or her computers, and have all of his or hercomputers be able to access the new device. Alternatively, the usercould have the seller of the new device add the device information tothe cloud service as associated with his or her user account, as well ashave the seller of the new device store the appropriate configurationdata in the new device, and have all of his or her computers be able toaccess the new devices.

By way of another example, the user may have a work computer on a worknetwork, a home computer on a home network, and a home printer on thesame home network. The user can, using his or her work computer, log into his or her user account on the cloud service and obtain the deviceinformation for the home printer, allowing the user to print from his orher work computer to his or her home printer.

Various actions such as communicating, receiving, storing, generating,obtaining, providing, and so forth performed by various modules arediscussed herein. It should be noted that the various modules can causesuch actions to be performed. A particular module causing an action tobe performed includes that particular module itself performing theaction, or alternatively that particular module invoking or otherwiseaccessing another component or module that performs the action (orperforms the action in conjunction with that particular module).

FIG. 6 illustrates an example computing device 600 that can beconfigured to implement the cloud-based device information storage inaccordance with one or more embodiments. Computing device 600 can be,for example, one of devices 104-118 of FIG. 1, a device implementing atleast part of cloud service 102 of FIG. 1, one of devices 202-206 ofFIG. 2, a device implementing at least part of cloud service 208 of FIG.2, and so forth.

Computing device 600 includes one or more processors or processing units602, one or more computer readable media 604 which can include one ormore memory and/or storage components 606, one or more input/output(I/O) devices 608, and a bus 610 that allows the various components anddevices to communicate with one another. Computer readable media 604and/or one or more I/O devices 608 can be included as part of, oralternatively may be coupled to, computing device 600. Bus 610represents one or more of several types of bus structures, including amemory bus or memory controller, a peripheral bus, an acceleratedgraphics port, a processor or local bus, and so forth using a variety ofdifferent bus architectures. Bus 610 can include wired and/or wirelessbuses.

Memory/storage component 606 represents one or more computer storagemedia. Component 606 can include volatile media (such as random accessmemory (RAM)) and/or nonvolatile media (such as read only memory (ROM),Flash memory, optical disks, magnetic disks, and so forth). Component606 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.)as well as removable media (e.g., a Flash memory drive, a removable harddrive, an optical disk, and so forth).

The techniques discussed herein can be implemented in software, withinstructions being executed by one or more processing units 602. It isto be appreciated that different instructions can be stored in differentcomponents of computing device 600, such as in a processing unit 602, invarious cache memories of a processing unit 602, in other cache memoriesof device 600 (not shown), on other computer readable media, and soforth. Additionally, it is to be appreciated that the location whereinstructions are stored in computing device 600 can change over time.

One or more input/output devices 608 allow a user to enter commands andinformation to computing device 600, and also allows information to bepresented to the user and/or other components or devices. Examples ofinput devices include a keyboard, a cursor control device (e.g., amouse), a microphone, a scanner, and so forth. Examples of outputdevices include a display device (e.g., a monitor or projector),speakers, a printer, a network card, and so forth.

Various techniques may be described herein in the general context ofsoftware or program modules. Generally, software includes routines,programs, applications, objects, components, data structures, and soforth that perform particular tasks or implement particular abstractdata types. An implementation of these modules and techniques may bestored on or transmitted across some form of computer readable media.Computer readable media can be any available medium or media that can beaccessed by a computing device. By way of example, and not limitation,computer readable media may comprise “computer storage media” and“communications media.”

“Computer storage media” include volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules, or other data. Computer storage mediainclude, but are not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputer.

“Communication media” typically embody computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as carrier wave or other transport mechanism. Communicationmedia also include any information delivery media. The term “modulateddata signal” means a signal that has one or more of its characteristicsset or changed in such a manner as to encode information in the signal.By way of example, and not limitation, communication media include wiredmedia such as a wired network or direct-wired connection, and wirelessmedia such as acoustic, RF, infrared, and other wireless media.Combinations of any of the above are also included within the scope ofcomputer readable media.

Generally, any of the functions or techniques described herein can beimplemented using software, firmware, hardware (e.g., fixed logiccircuitry), manual processing, or a combination of theseimplementations. The terms “module” and “component” as used hereingenerally represent software, firmware, hardware, or combinationsthereof. In the case of a software implementation, the module orcomponent represents program code that performs specified tasks whenexecuted on a processor (e.g., CPU or CPUs). The program code can bestored in one or more computer readable memory devices, furtherdescription of which may be found with reference to FIG. 6. The featuresof the cloud-based device information storage techniques describedherein are platform-independent, meaning that the techniques can beimplemented on a variety of commercial computing platforms having avariety of processors.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

What is claimed is:
 1. A method comprising: maintaining, by a cloudservice and associated with a user account of a user of the cloudservice, a first device information for a first device and a seconddevice information for a second device, the first and second devicesassociated with the user account, the first device information includingcredential information allowing the second device to access the firstdevice, the second device information including credential informationallowing the first device to access the second device; making the firstdevice information available to the second device and the second deviceinformation available to the first device.
 2. The method as recited inclaim 1, the first device information including a container identifierthat allows the first device information to be distinguished from thesecond device information.
 3. The method as recited in claim 1, thecredential information for the first device including a name andpassword used to access the first device.
 4. The method as recited inclaim 1, the device information including remote access informationindicating how the first device can be accessed by the second device onother networks across the Internet.
 5. The method as recited in claim 1,the first device information including property information includingsettings for the first device.
 6. The method as recited in claim 1, thefirst device information including an indication of one or more devicedrivers and applications to be installed on the second device in orderto access the first device.
 7. The method as recited in claim 1, thefirst device information including one or more attributes of the firstdevice to provide a common user experience for the first device whenaccessed by the second device.
 8. The method as recited in claim 1,further comprising: receiving a third device information for a thirddevice associated with the user account; the maintaining includingmaintaining the third device information, the third device informationbeing different than the first device information, the third deviceinformation being different than the second device information; andmaking the third device information available to the first device andthe second device.
 9. The method as recited in claim 8, furthercomprising receiving at least part of the third device information fromthe third device.
 10. The method as recited in claim 8, furthercomprising receiving at least part of the third device information froma seller of the third device.
 11. One or more memory devices comprisinginstructions that are executable to cause a device to implement a cloudservice that performs operations comprising: maintaining, by a cloudservice and associated with a user account of a user of the cloudservice, a first device information for a first device and a seconddevice information for a second device, the first and second devicesassociated with the user account, the first device information includingcredential information allowing the second device to access the firstdevice, the second device information including credential informationallowing the first device to access the second device; making the firstdevice information available to the second device and the second deviceinformation available to the first device.
 12. The one or more memorydevices as recited in claim 11, the first device information including acontainer identifier that allows the first device information to bedistinguished from the second device information.
 13. The one or morememory devices as recited in claim 11, the first device being on a firstnetwork and the second device being on a second network.
 14. The one ormore memory devices as recited in claim 13, the second deviceinformation including both an identifier of a gateway of the secondnetwork and an identifier of the second device on the second network.15. The one or more memory devices as recited in claim 11, the seconddevice information including an indication of one or more device driversto be installed in order to access the second device, the instructionsthat are executable to cause a device to implement a cloud servicefurther comprising making the one or more device drivers available tothe first device.
 16. The one or more memory devices as recited in claim15, the making the one or more device drivers available comprising anindication of a location where the one or more device drivers may beobtained.
 17. The one or more memory devices as recited in claim 11, thesecond device information including one or more settings, theinstructions that are executable to cause a device to implement a cloudservice further comprising making the one or more settings available tothe first device.
 18. The one or more memory devices as recited in claim11, the instructions that are executable to cause a device to implementa cloud service further comprising instructions to persist, after theuser has logged off of the cloud service associated with the useraccount, the second device information.
 19. The one or more memorydevices as recited in claim 11, the instructions that are executable tocause a device to implement a cloud service further comprising:receiving third device information for a third device paired to thesecond device; and making the third device information available to thefirst device.
 20. A device comprising: one or more processors; and oneor more computer storage memories comprising instructions that areexecutable by the one or more processors to perform a processcomprising: maintaining, by a cloud service and associated with a useraccount of a user of the cloud service, a first device information for afirst device and a second device information for a second device, thefirst and second devices associated with the user account, the firstdevice information including credential information allowing the seconddevice to access the first device, the second device informationincluding credential information allowing the first device to access thesecond device; making the first device information available to thesecond device and the second device information available to the firstdevice.